# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

with Files('*'):
    BUG_COMPONENT = ('Core', 'Web Audio')

DIRS += ['blink']

TEST_DIRS += ['gtest']

MOCHITEST_MANIFESTS += [
    'test/blink/mochitest.ini',
    'test/mochitest.ini',
]

BROWSER_CHROME_MANIFESTS += [
    'test/browser.ini',
]

TEST_HARNESS_FILES.testing.mochitest.tests.dom.media.webaudio.test.blink += [
    'test/blink/audio-testing.js',
    'test/blink/convolution-testing.js',
    'test/blink/panner-model-testing.js',
]

EXPORTS += [
    'AlignedTArray.h',
    'AudioBlock.h',
    'AudioEventTimeline.h',
    'AudioNodeEngine.h',
    'AudioNodeExternalInputStream.h',
    'AudioNodeStream.h',
    'AudioParamTimeline.h',
    'MediaBufferDecoder.h',
    'ThreeDPoint.h',
    'WebAudioUtils.h',
]

EXPORTS.mozilla += [
    'FFTBlock.h',
    'MediaStreamAudioDestinationNode.h',
]

EXPORTS.mozilla.dom += [
    'AnalyserNode.h',
    'AudioBuffer.h',
    'AudioBufferSourceNode.h',
    'AudioContext.h',
    'AudioDestinationNode.h',
    'AudioListener.h',
    'AudioNode.h',
    'AudioParam.h',
    'AudioProcessingEvent.h',
    'BiquadFilterNode.h',
    'ChannelMergerNode.h',
    'ChannelSplitterNode.h',
    'ConstantSourceNode.h',
    'ConvolverNode.h',
    'DelayNode.h',
    'DynamicsCompressorNode.h',
    'GainNode.h',
    'IIRFilterNode.h',
    'MediaElementAudioSourceNode.h',
    'MediaStreamAudioDestinationNode.h',
    'MediaStreamAudioSourceNode.h',
    'OfflineAudioCompletionEvent.h',
    'OscillatorNode.h',
    'PannerNode.h',
    'PeriodicWave.h',
    'ScriptProcessorNode.h',
    'StereoPannerNode.h',
    'WaveShaperNode.h',
]

SOURCES += [
    'AnalyserNode.cpp',
    'AudioBlock.cpp',
    'AudioBuffer.cpp',
    'AudioBufferSourceNode.cpp',
    'AudioContext.cpp',
    'AudioDestinationNode.cpp',
    'AudioEventTimeline.cpp',
    'AudioListener.cpp',
    'AudioNode.cpp',
    'AudioNodeEngine.cpp',
    'AudioNodeExternalInputStream.cpp',
    'AudioNodeStream.cpp',
    'AudioParam.cpp',
    'AudioProcessingEvent.cpp',
    'BiquadFilterNode.cpp',
    'BufferDecoder.cpp',
    'ChannelMergerNode.cpp',
    'ChannelSplitterNode.cpp',
    'ConstantSourceNode.cpp',
    'ConvolverNode.cpp',
    'DelayBuffer.cpp',
    'DelayNode.cpp',
    'DynamicsCompressorNode.cpp',
    'FFTBlock.cpp',
    'GainNode.cpp',
    'IIRFilterNode.cpp',
    'MediaBufferDecoder.cpp',
    'MediaElementAudioSourceNode.cpp',
    'MediaStreamAudioDestinationNode.cpp',
    'MediaStreamAudioSourceNode.cpp',
    'OfflineAudioCompletionEvent.cpp',
    'OscillatorNode.cpp',
    'PannerNode.cpp',
    'PeriodicWave.cpp',
    'ScriptProcessorNode.cpp',
    'StereoPannerNode.cpp',
    'ThreeDPoint.cpp',
    'WaveShaperNode.cpp',
    'WebAudioUtils.cpp',
]

if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['BUILD_ARM_NEON']:
    SOURCES += ['AudioNodeEngineNEON.cpp']
    SOURCES['AudioNodeEngineNEON.cpp'].flags += CONFIG['NEON_FLAGS']
    LOCAL_INCLUDES += [
        '/media/openmax_dl/dl/api/'
    ]

# Are we targeting x86 or x64?  If so, build SSE2 files.
if CONFIG['INTEL_ARCHITECTURE']:
    SOURCES += ['AudioNodeEngineSSE2.cpp']
    DEFINES['USE_SSE2'] = True
    SOURCES['AudioNodeEngineSSE2.cpp'].flags += CONFIG['SSE2_FLAGS']


include('/ipc/chromium/chromium-config.mozbuild')

FINAL_LIBRARY = 'xul'
LOCAL_INCLUDES += [
    '..'
]

if CONFIG['GNU_CXX']:
    CXXFLAGS += ['-Wno-error=shadow']
